package com.freight.common.wlhyupload.vo;

import com.freight.common.wlhyupload.vo.zvo.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.List;

/**
 * 订单信息上传
 */
@Data
@ToString
@EqualsAndHashCode
@NoArgsConstructor
@Accessors(chain = true)
public final class OrderUpVo {

    /** 上游企业委托运输单号（必填） */
    private String originalDocumentNumber;

    /** 运单号（必填） */
    private String shippingNoteNumber;

    /** 分段分单号（必填,分段运输和多车运输由四位数字组成，前两位代表一单多车的序号，后两位代表分段序号。若运输形式为一单一车填0000） */
    private String serialNumber;

    /** 运输总车辆数（必填,同一运单号的货物总共使用的运输车辆总数） */
    private Integer vehicleAmount;

    /** 运输组织类型代码（必填） */
    private Integer transportTypeCode;

    /** 运单上传时间(YYYYMMDDhhmmss)（必填） */
    private Long sendToProDateTime;

    /** 网络货运经营者名称（必填） */
    private String carrier;

    /** 网络货运经营者统一社会信用代码（必填） */
    private String unifiedSocialCreditIdentifier;

    /** 网络货运经营者道路运输经营许可证编号（必填） */
    private String permitNumber;

    /** 运单生成时间(YYYYMMDDhhmmss)（必填） */
    private Long consignmentDateTime;

    /** 业务类型代码（必填） */
    private String businessTypeCode;

    /** 发货时间(YYYYMMDDhhmmss)（必填） */
    private Long despatchActualDateTime;

    /** 收货时间(YYYYMMDDhhmmss)（必填） */
    private Long goodsReceiptDateTime;

    /** 运费金额(元,保留三位小数)（必填） */
    private BigDecimal totalMonetaryAmount;

    /** 托运人信息 */
    private List<ConsignorInfo> consignorInfo;

    /** 收货方信息 */
    private List<ConsigneeInfo> consigneeInfo;

    /** 承运人信息 */
    private List<ActualCarrierInfo> actualCarrierInfo;

    /** 车辆信息 */
    private List<VehicleInfo> vehicleInfo;

    /** 保险信息 */
    private List<InsuranceInformation> insuranceInformation;

    /** 备注（选填） */
    private String remark;

}
